package l2hc.gameserver.handler.bbs;

import l2hc.gameserver.model.Player;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public abstract class CommunityBoardHandler
{
	protected static final Logger _log = LoggerFactory.getLogger(CommunityBoardHandler.class);

	public abstract String[] getBypassCommands();
	public abstract  void onBypassCommand(Player player, String bypass);

	public void onWriteCommand(Player player, String bypass, String arg1, String arg2, String arg3, String arg4, String arg5)
	{

	}

	/**
	 * Обрезает текущую команду из общей.
	 * @param command
	 * @return
	 */
	public static String trunkateCommand(String command)
	{
		String com = curCommand(command);
		return !command.isEmpty() ? command.replaceFirst("_" + com, "") : "";
	}

	/**
	 * Обрезает общую команду до текущей.
	 * @param command
	 * @return
	 */
	public static String curCommand(String command)
	{
		return curCommand(command, 1);
	}
	/**
	 * Обрезает общую команду до одной или нескольких текущих.
	 * @param command
	 * @param count
	 * @return
	 */
	public static String curCommand(String command, int count)
	{
		if (command != null && !command.isEmpty())
		{
			String[] coms = command.split("_");
			command = "";
			for(int i = 0; i <= count && i < coms.length; i++)
				command+=(command.isEmpty() ? "" : "_") + coms[i];
		}
		return command;
	}

	/**
	 * Сравнивает указанную команду, с текущей (обрезает текущую).
	 * @param command
	 * @param compCommand - не должна быть обрезана.
	 * @return
	 */
	public static boolean compareCommands(String command, String compCommand)
	{
		try
		{
			return compCommand.equals(curCommand(command));
		}
		catch (NullPointerException e)
		{
			_log.error("CommunityBoard: Error compare commands '" + command + "' and '"+ compCommand+"'.", e);
		}
		return false;
	}
}
